/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package shifr;
import java.io.*;
import java.util.regex.*;
 /**
 *
 * @author krox
 * тут происходит шифрование слова, введёного пользователем
 */
public class Shifr {
String sl, rez="", rshf="";

   /** @Это не используется
    public ShifrS() { //если пользователь ничего не ввёл
sl="Горьковский пепелац-внедорожник ";
System.out.println("Вы ничего не ввели. Будем шифровать фразу");
System.out.println("\""+sl+"\"");
//System.out.println();//просто для красоты ;)
    }
   */
public Shifr(String slovo) {
      sl=slovo.toLowerCase();
      if(sl.length()%2!=0){sl+=" ";}//если количество букв нечётно, добавляем в конец пробел
          }


    public void Shifrovanie(Shifr shi) throws IOException{

        int i,j,ss,nst1=0,nstr1=6,nst2=8,nstr2=4;
        Pattern p = Pattern.compile("([а-я]|[.]|[,]|[!]|[?]|[(]|[)]|[*]|[-]|[' '])*?");
        Matcher m = p.matcher(sl);
              boolean b = m.matches();
if(b==false){
      String str="";
    BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Был зафиксирован ввод запрещённых символов.\nНажмите \"Enter\" и попробуйте сначала");
    str = input.readLine();
    VyborDeistv.swtch(1);
}
else{
       // try{
        char slv[] = sl.toCharArray();//переводим слово в массив символов, но перед этим снижаем регистр

/*цикл1*/  for(ss=0; ss<sl.length();ss=ss+2){//до конца слова
   /*1*/   for(i=0;i<=5;i++){//до конца строки
          for(j=0;j<=6;j++){//до конца столбца
              if(slv[ss]==Alfavit.alf[i][j]){nst1=j; nstr1=i;
             }
          }
      }/*/1*/
   /*2*/   for(i=0;i<=5;i++){//до конца строки
          for(j=0;j<=6;j++){//до конца столбца
              if(slv[ss+1]==Alfavit.alf[i][j]){
                  nst2=j; nstr2=i;/*nst* - столблец  nstr* - строка*/}
          }
      }/*/2*/
      if(nstr1==nstr2){ //индексы строки равны
          if(nst1==6){rez=rez+Alfavit.alf[nstr1][0]+Alfavit.alf[nstr1][nst2+1];}/*проверка на последний символ*/
          else if(nst2==6){rez=rez+Alfavit.alf[nstr1][nst1+1]+Alfavit.alf[nstr1][0];}/*проверка на последний символ*/
          else rez=rez+Alfavit.alf[nstr1][nst1+1]+Alfavit.alf[nstr1][nst2+1];
      }else
         if(nst1==nst2){ //индексы столбца равны
             if(nstr1==5){rez=rez+Alfavit.alf[0][nst1]+Alfavit.alf[nstr2+1][nst2];}
             else if(nstr2==5){rez=rez+Alfavit.alf[nstr1+1][nst1]+Alfavit.alf[0][nst2];}
             else rez=rez+Alfavit.alf[nstr1+1][nst1]+Alfavit.alf[nstr2+1][nst2];
      } else{ //начинаем смещать символы по диагонали
       rez=rez+Alfavit.alf[nstr1][nst2]+Alfavit.alf[nstr2][nst1];
  }//закрываем
}/*//цикл1*/
   /*     }
        catch (ArrayIndexOutOfBoundsException e){
            System.err.println("В строке/файле находятся символы,\n шифрование которых не предусмотрено данной программой");
            System.err.println("Пожалуйста, уберите лишние символы, и попробуйте сначала");
            VyborDeistv.swtch('1');

        }*/
    }}
public String PrintRezShifr(Shifr s){
    return s.rez;
}

public void RasShifr(Shifr rshi) throws IOException{
 int i,j,ss,nst1=0,nstr1=6,nst2=8,nstr2=4;//необходимые переменные
 //try{
 Pattern p = Pattern.compile("([а-я]|[.]|[,]|[!]|[?]|[(]|[)]|[*]|[-]|[' '])*?");
        Matcher m = p.matcher(sl);
              boolean b = m.matches();
if(b==false){
      String str="";
    BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Был зафиксирован ввод запрещённых символов.\nНажмите \"Enter\" и попробуйте сначала");
    str = input.readLine();
    VyborDeistv.swtch(2);
}
else{
   char fras[]=sl.toCharArray(); //переводим зашифрованное сообщение в набор символов
  /*цикл1*/  for(ss=0; ss<sl.length();ss=ss+2){//до конца слова
   /*1*/   for(i=0;i<=5;i++){//до конца строки
          for(j=0;j<=6;j++){//до конца столбца
              if(fras[ss]==Alfavit.alf[i][j]){nst1=j; nstr1=i;
             }
          }
      }/*/1*/
   /*2*/   for(i=0;i<=5;i++){//до конца строки
          for(j=0;j<=6;j++){//до конца столбца
              if(fras[ss+1]==Alfavit.alf[i][j]){
                  nst2=j; nstr2=i;}/*nst* - столблец  nstr* - строка*/
          }
      }/*/2*/
      if(nstr1==nstr2){ //индексы строки равны
          if(nst1==0){rshf=rshf+Alfavit.alf[nstr1][6]+Alfavit.alf[nstr1][nst2-1];}/*проверка на последний символ*/
          else if(nst2==0){rshf=rshf+Alfavit.alf[nstr1][nst1-1]+Alfavit.alf[nstr1][6];}/*проверка на последний символ*/
          else rshf=rshf+Alfavit.alf[nstr1][nst1-1]+Alfavit.alf[nstr1][nst2-1];
      }else
         if(nst1==nst2){ //индексы столбца равны
             if(nstr1==0){rshf=rshf+Alfavit.alf[5][nst1]+Alfavit.alf[nstr2-1][nst2];}
             else if(nstr2==0){rshf=rshf+Alfavit.alf[nstr1-1][nst1]+Alfavit.alf[5][nst2];}
             else rshf=rshf+Alfavit.alf[nstr1-1][nst1]+Alfavit.alf[nstr2-1][nst2];
      } else{
   //начинаем смещать символы по диагонали
         rshf=rshf+Alfavit.alf[nstr1][nst2]+Alfavit.alf[nstr2][nst1];
   }
  }//закрываем цикл1
/*{ }//close try
  catch (ArrayIndexOutOfBoundsException e){
            System.err.println("В строке/файле находятся символы,\nшифрование которых не предусмотрено данной программой");
            System.err.println("Пожалуйста, уберите лишние символы, и попробуйте сначала");
             VyborDeistv.swtch('2');*/
}
}//закрываем метод

public String PrintRezRasShifr(Shifr r){
  return r.rshf;
}

    }
